<?php

class Test_Kirki_Color extends WP_UnitTestCase {

	public function test() {

		$this->assertEquals(
			array( 255, 255, 255 ),
			Kirki_Color::get_rgb( '#ffffff' )
		);

		$this->assertEquals(
			array( 0, 0, 0 ),
			Kirki_Color::get_rgb( '#000000' )
		);

		$this->assertEquals(
			array( 255, 0, 0 ),
			Kirki_Color::get_rgb( '#ff0000' )
		);

		$this->assertEquals(
			array( 0, 255, 0 ),
			Kirki_Color::get_rgb( '#00ff00' )
		);

		$this->assertEquals(
			array( 0, 0, 255 ),
			Kirki_Color::get_rgb( '#0000ff' )
		);

		$word_colors = array(
			'aliceblue'            => 'F0F8FF',
			'antiquewhite'         => 'FAEBD7',
			'aqua'                 => '00FFFF',
			'aquamarine'           => '7FFFD4',
			'azure'                => 'F0FFFF',
			'beige'                => 'F5F5DC',
			'bisque'               => 'FFE4C4',
			'black'                => '000000',
			'blanchedalmond'       => 'FFEBCD',
			'blue'                 => '0000FF',
			'blueviolet'           => '8A2BE2',
			'brown'                => 'A52A2A',
			'burlywood'            => 'DEB887',
			'cadetblue'            => '5F9EA0',
			'chartreuse'           => '7FFF00',
			'chocolate'            => 'D2691E',
			'coral'                => 'FF7F50',
			'cornflowerblue'       => '6495ED',
			'cornsilk'             => 'FFF8DC',
			'crimson'              => 'DC143C',
			'cyan'                 => '00FFFF',
			'darkblue'             => '00008B',
			'darkcyan'             => '008B8B',
			'darkgoldenrod'        => 'B8860B',
			'darkgray'             => 'A9A9A9',
			'darkgreen'            => '006400',
			'darkgrey'             => 'A9A9A9',
			'darkkhaki'            => 'BDB76B',
			'darkmagenta'          => '8B008B',
			'darkolivegreen'       => '556B2F',
			'darkorange'           => 'FF8C00',
			'darkorchid'           => '9932CC',
			'darkred'              => '8B0000',
			'darksalmon'           => 'E9967A',
			'darkseagreen'         => '8FBC8F',
			'darkslateblue'        => '483D8B',
			'darkslategray'        => '2F4F4F',
			'darkslategrey'        => '2F4F4F',
			'darkturquoise'        => '00CED1',
			'darkviolet'           => '9400D3',
			'deeppink'             => 'FF1493',
			'deepskyblue'          => '00BFFF',
			'dimgray'              => '696969',
			'dimgrey'              => '696969',
			'dodgerblue'           => '1E90FF',
			'firebrick'            => 'B22222',
			'floralwhite'          => 'FFFAF0',
			'forestgreen'          => '228B22',
			'fuchsia'              => 'FF00FF',
			'gainsboro'            => 'DCDCDC',
			'ghostwhite'           => 'F8F8FF',
			'gold'                 => 'FFD700',
			'goldenrod'            => 'DAA520',
			'gray'                 => '808080',
			'green'                => '008000',
			'greenyellow'          => 'ADFF2F',
			'grey'                 => '808080',
			'honeydew'             => 'F0FFF0',
			'hotpink'              => 'FF69B4',
			'indianred'            => 'CD5C5C',
			'indigo'               => '4B0082',
			'ivory'                => 'FFFFF0',
			'khaki'                => 'F0E68C',
			'lavender'             => 'E6E6FA',
			'lavenderblush'        => 'FFF0F5',
			'lawngreen'            => '7CFC00',
			'lemonchiffon'         => 'FFFACD',
			'lightblue'            => 'ADD8E6',
			'lightcoral'           => 'F08080',
			'lightcyan'            => 'E0FFFF',
			'lightgoldenrodyellow' => 'FAFAD2',
			'lightgray'            => 'D3D3D3',
			'lightgreen'           => '90EE90',
			'lightgrey'            => 'D3D3D3',
			'lightpink'            => 'FFB6C1',
			'lightsalmon'          => 'FFA07A',
			'lightseagreen'        => '20B2AA',
			'lightskyblue'         => '87CEFA',
			'lightslategray'       => '778899',
			'lightslategrey'       => '778899',
			'lightsteelblue'       => 'B0C4DE',
			'lightyellow'          => 'FFFFE0',
			'lime'                 => '00FF00',
			'limegreen'            => '32CD32',
			'linen'                => 'FAF0E6',
			'magenta'              => 'FF00FF',
			'maroon'               => '800000',
			'mediumaquamarine'     => '66CDAA',
			'mediumblue'           => '0000CD',
			'mediumorchid'         => 'BA55D3',
			'mediumpurple'         => '9370D0',
			'mediumseagreen'       => '3CB371',
			'mediumslateblue'      => '7B68EE',
			'mediumspringgreen'    => '00FA9A',
			'mediumturquoise'      => '48D1CC',
			'mediumvioletred'      => 'C71585',
			'midnightblue'         => '191970',
			'mintcream'            => 'F5FFFA',
			'mistyrose'            => 'FFE4E1',
			'moccasin'             => 'FFE4B5',
			'navajowhite'          => 'FFDEAD',
			'navy'                 => '000080',
			'oldlace'              => 'FDF5E6',
			'olive'                => '808000',
			'olivedrab'            => '6B8E23',
			'orange'               => 'FFA500',
			'orangered'            => 'FF4500',
			'orchid'               => 'DA70D6',
			'palegoldenrod'        => 'EEE8AA',
			'palegreen'            => '98FB98',
			'paleturquoise'        => 'AFEEEE',
			'palevioletred'        => 'DB7093',
			'papayawhip'           => 'FFEFD5',
			'peachpuff'            => 'FFDAB9',
			'peru'                 => 'CD853F',
			'pink'                 => 'FFC0CB',
			'plum'                 => 'DDA0DD',
			'powderblue'           => 'B0E0E6',
			'purple'               => '800080',
			'red'                  => 'FF0000',
			'rosybrown'            => 'BC8F8F',
			'royalblue'            => '4169E1',
			'saddlebrown'          => '8B4513',
			'salmon'               => 'FA8072',
			'sandybrown'           => 'F4A460',
			'seagreen'             => '2E8B57',
			'seashell'             => 'FFF5EE',
			'sienna'               => 'A0522D',
			'silver'               => 'C0C0C0',
			'skyblue'              => '87CEEB',
			'slateblue'            => '6A5ACD',
			'slategray'            => '708090',
			'slategrey'            => '708090',
			'snow'                 => 'FFFAFA',
			'springgreen'          => '00FF7F',
			'steelblue'            => '4682B4',
			'tan'                  => 'D2B48C',
			'teal'                 => '008080',
			'thistle'              => 'D8BFD8',
			'tomato'               => 'FF6347',
			'turquoise'            => '40E0D0',
			'violet'               => 'EE82EE',
			'wheat'                => 'F5DEB3',
			'white'                => 'FFFFFF',
			'whitesmoke'           => 'F5F5F5',
			'yellow'               => 'FFFF00',
			'yellowgreen'          => '9ACD32'
		);
		foreach ( $word_colors as $word => $color ) {
			$this->assertEquals( '#' . $color, Kirki_Color::sanitize_hex( $word ) );
		}
		$this->assertTrue( in_array( Kirki_Color::sanitize_hex( '#333' ), array( '#333', '#333333' ) ) );

		$this->assertEquals( 'rgba(0,0,33,.4)', Kirki_Color::sanitize_rgba( 'rgba(0,0,33,.4)' ) );

		$this->assertEquals( 'transparent', Kirki_Color::sanitize_color( 'transparent' ) );
		$this->assertTrue( in_array( Kirki_Color::sanitize_color( '#333333' ), array( '#333333', '#333' ) ) );
		$this->assertEquals( 'rgba(255,200,200,1)', Kirki_Color::sanitize_color( 'rgba(255,200,200,1)' ) );

		$this->assertEquals( 'rgb(255,200,200)', Kirki_Color::rgba_to_rgb( 'rgba(255,200,200,1)' ) );

		$this->assertTrue( in_array( Kirki_Color::rgba2hex( 'rgba(255,255,255,1)' ), array( '#fff', '#FFF', '#ffffff', '#FFFFFF' ) ) );
		$this->assertEquals( '#000000', Kirki_Color::rgba2hex( 'rgba(0,0,0,1)' ) );

		$this->assertEquals( '1', Kirki_Color::get_alpha_from_rgba( 'rgba(255,255,255,1)' ) );
		$this->assertEquals( '.35', Kirki_Color::get_alpha_from_rgba( 'rgba(255,255,255,.35)' ) );
		$this->assertEquals( '0', Kirki_Color::get_alpha_from_rgba( 'rgba(255,255,255,0)' ) );

		$this->assertEquals( 'rgba(0,0,0,0)', Kirki_Color::sanitize_color( array( 'rgba' => 'rgba(0,0,0,0)' ) ) );
		$this->assertTrue( in_array( Kirki_Color::sanitize_color( array( 'color' => '#000000' ) ), array( '#000', '#000000', 'rgba(0,0,0,1)' ) ) );
		$this->assertEquals( '', Kirki_Color::sanitize_color( array() ) );

		$this->assertEquals( 'rgba(255,255,255,0)', Kirki_Color::get_rgba( '#fff', 0 ) );

	}
}
